package risk.control.project.utils.vaild;//package risk.control.project.utils.vaild;
//
//import java.math.BigDecimal;
//import java.math.RoundingMode;
//
//import java.io.Serializable;
//
//public class NumberValidator {
//
//    // 验证结果封装类
//    public static class ValidationResult implements Serializable {
//        public final boolean valid;
//        public final String message;
//
//        public ValidationResult(boolean valid, String message) {
//            this.valid = valid;
//            this.message = message;
//        }
//    }
//
//    /**
//     * 验证数字字符串是否合法（不允许正负号，最多2位小数）
//     *
//     * @param numberStr 要验证的字符串
//     * @return 验证结果对象
//     */
//    public static ValidationResult validateNumber(String numberStr) {
//        // 1. 检查null或空字符串
//        if (numberStr == null) {
//            return new ValidationResult(false, "输入不能为null");
//        }
//
//        String trimmedStr = numberStr.trim();
//        if (trimmedStr.isEmpty()) {
//            return new ValidationResult(false, "输入不能为空字符串");
//        }
//
//        // 2. 检查是否只包含数字和小数点
//        if (!trimmedStr.matches("^\\d+\\.?\\d*$")) {
//            return new ValidationResult(false, "取现金额只能包含数字和小数点");
//        }
//
//        // 3. 检查小数点数量
//        int dotIndex = trimmedStr.indexOf('.');
//        if (dotIndex != trimmedStr.lastIndexOf('.')) {
//            return new ValidationResult(false, "取现金额只能有1个小数点");
//        }
//
//        // 4. 严格检查小数位数（必须正好2位）
//        if (dotIndex != -1) {
//            String decimalPart = trimmedStr.substring(dotIndex + 1);
//            if (decimalPart.length() != 2) {
//                return new ValidationResult(false, "取现金额精确到小数点后2位");
//            }
//        } else {
//            return new ValidationResult(false, "取现金额精确到小数点后2位");
//        }
//
//        // 5. 尝试转换为数字验证格式
//        try {
//            new BigDecimal(trimmedStr).setScale(2, RoundingMode.HALF_UP);
//            return new ValidationResult(true, "取款金额格式正确");
//        } catch (NumberFormatException e) {
//            return new ValidationResult(false, "取款金额格式不正确");
//        }
//    }
//
//    /**
//     * 验证并转换数字字符串
//     *
//     * @param numberStr 要验证的字符串
//     * @return 转换后的Double值（验证失败返回null）
//     */
//    public static Double parseNumber(String numberStr) {
//        ValidationResult result = validateNumber(numberStr);
//        if (result.valid) {
//            try {
//                return new BigDecimal(numberStr.trim()).setScale(2, RoundingMode.HALF_UP).doubleValue();
//            } catch (NumberFormatException e) {
//                return null;
//            }
//        }
//        return null;
//    }
//}
